From 9e2aaf8be8de5d34eac71e6d03ff005ce7529168 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 8 Mar 2006 15:49:04 +0100 Subject: [PATCH] Fix call to set_timer in vlapic.c. Should not set timer.expires outside set_timer, since set_timer will do that for the caller. Signed-off-by: Xin Li --- xen/arch/x86/hvm/vlapic.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 46546077db..10d7284342 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -239,9 +239,7 @@ static int vlapic_accept_irq(struct vcpu *v, int delivery_mode, case VLAPIC_DELIV_MODE_INIT: if ( !level && trig_mode == 1 ) //Deassert - { printk("This hvm_vlapic is for P4, no work for De-assert init\n"); - } else { /* FIXME How to check the situation after vcpu reset? */ @@ -529,7 +527,6 @@ static void vlapic_read_aligned(struct vlapic *vlapic, unsigned int offset, counter_passed = passed / (APIC_BUS_CYCLE_NS * vlapic->timer_divide_count); - vlapic->timer_current_count -= counter_passed; if ( vlapic->timer_current_count <= 0 ) { @@ -769,16 +766,15 @@ static void vlapic_write(struct vcpu *v, unsigned long address, offset = APIC_BUS_CYCLE_NS * vlapic->timer_divide_count * vlapic->timer_initial_count; - vlapic->vlapic_timer.expires = now + offset; - set_timer(&vlapic->vlapic_timer, vlapic->vlapic_timer.expires); + set_timer(&vlapic->vlapic_timer, now + offset); HVM_DBG_LOG(DBG_LEVEL_VLAPIC, "bus cycle is %"PRId64"ns, now 0x%016"PRIx64", " "timer initial count 0x%x, offset 0x%016"PRIx64", " "expire @ 0x%016"PRIx64".", APIC_BUS_CYCLE_NS, now, vlapic->timer_initial_count, - offset, vlapic->vlapic_timer.expires); + offset, now + offset); } break; @@ -873,8 +869,7 @@ void vlapic_timer_fn(void *data) offset = APIC_BUS_CYCLE_NS * vlapic->timer_divide_count * vlapic->timer_initial_count; - vlapic->vlapic_timer.expires = now + offset; - set_timer(&vlapic->vlapic_timer, vlapic->vlapic_timer.expires); + set_timer(&vlapic->vlapic_timer, now + offset); } else vlapic->timer_current_count = 0; @@ -890,7 +885,8 @@ void vlapic_timer_fn(void *data) "now 0x%016"PRIx64", expire @ 0x%016"PRIx64", " "timer initial count 0x%x, timer current count 0x%x.", now, vlapic->vlapic_timer.expires, - vlapic->timer_initial_count, vlapic->timer_current_count); + vlapic->timer_initial_count, + vlapic->timer_current_count); } #if 0 -- 2.30.2